#include<bits/stdc++.h>
using namespace std;

const int dx[]={-1,1,0,0};
const int dy[]={0,0,-1,1};

int main(){
	int n,m;
	cin>>n>>m;
	vector<string> g(n);
	for(int i=0;i<n;i++)cin>>g[i];
	
	vector<vector<int>> d(n,vector<int>(m,-1));
	queue<pair<int,int>> q;
	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(g[i][j]=='E'){
				d[i][j]=0;
				q.emplace(i,j); 
			}
		}
	}
	int x,y;
	while(!q.empty()){
		auto x=q.front().first;
		auto y=q.front().second;
		q.pop();
		for(int i=0;i<4;i++){
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=0&&nx<n&&ny>=0&&ny<m){
				if(g[nx][ny]=='.'&&d[nx][ny]==-1){
					d[nx][ny]=d[x][y]+1;
					q.emplace(nx,ny);
				}
			}
		}
	}
	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(g[i][j]=='.'){
				int cur=d[i][j];
				for(int k=0;k<4;k++){
					int nx=i+dx[k];
			        int ny=j+dy[k];
			        if(nx<0||nx>=n||ny<0||ny>=m)continue;
			        if(g[nx][ny]=='#')continue;
			        
			        int near=(g[nx][ny]=='E')? 0: d[nx][ny];
			        if(near==cur-1){
			        	g[i][j]="^v<>"[k];
						break; 
					}
				}
			}
		}
	}
	for(auto s:g){
		cout<<s<<endl;
	}
	return 0;
} 
